package com.zf.springdoc.openapi3.config;

import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Openapi的配置
 */
@Configuration
public class OpenApiConfig {

    /**
     * 定义一个OpenApi分组，相当于替换了swagger2的 Docket, 也可以在配置文件中使用 springdoc.group-configs 配置分组。
     * 也可以不配置分组，这会使用一个默认的分组扫描 "/**" 路径，默认分组会排除 actuator 的所有端点路径
     */
    @Bean
    public GroupedOpenApi openApiGroup1() {
        return GroupedOpenApi.builder()
                // 分组名
                .group("api分组1")
                // 把那些路径纳入分组，同一个路径可以同时纳入到不同的分组中，默认是 “/**”
                .pathsToMatch("/v1/hello/**", "/v2/**")
                // 扫描哪些包，pathsToMatch和packagesToScan配置一个就行，都配置则取交集
                // .packagesToScan("com.example.springdoctest.controller.v1")
                // 排除哪些路径，自定义的分组会默认排除 actuator 的 health 端点路径，默认分组会排除 actuator 的所有端点路径
                .pathsToExclude()
                .build();
    }

    /**
     * 定义一个OpenApi分组
     */
    @Bean
    public GroupedOpenApi openApiGroup2() {
        return GroupedOpenApi.builder()
                .group("api分组2")
                .pathsToMatch("/v2/**", "/v1/hello/**")
                // .packagesToScan("com.example.springdoctest.controller.v2")
                .build();
    }

}
